A typical computing system includes, among other things, host processors, memory controllers, media hardware accelerators, and a peripheral controller. While the memory controller helps the host processor to interface with a local memory, the peripheral controller provides the access to all the input and output (I/O) devices, viz., serial ATA (hard disk drive or BD/DVD/CD ROM drives), Universal Serial Bus (Key board/Mouse, external ports), Peripheral Component Interconnect (PCI), PCI-Express (PCIe) expansion slots, Ethernet (network connectivity), etc.
Generally, the I/O devices are virtualized by software, such as a hypervisor, to enable multiple hosts to share the same system resources. The hypervisor or a virtual machine monitor (VMM) provides a platform for isolated execution of system images and manages access between the system images and the attached I/O devices. Standards for PCIe based I/O virtualization, where multiple system images are implemented on a single host processor, are specified by Peripheral Component Interconnect Special Interest Group (PCI-SIG) in the single root input-output virtualization (SR-IOV) standard. However, the overhead of such virtualization techniques results in lesser performance and consume higher compute resources.
The capabilities of the SR-IOV standard have been extended by a multi root input-output virtualization (MR-IOV) standard to allow virtualization of the I/O devices between multiple host processors based on the standards of MR-IOV provided by the PCI-SIG. However, in order to virtualize the system following MR-IOV standards, a lot of components need to be made MR-IOV compliant. In addition, a MR-IOV switch needs to be implemented which adds additional component to the system.